//
// Created by chenxp on 2025/8/24.
//
#include "ToggleButton.h"

ToggleButton::ToggleButton(QWidget *parent)
    : QPushButton(parent) {
    // 启用 hover 事件
    setAttribute(Qt::WA_Hover, true);

    // 初始状态
    updateStyle();

    // 点击时自动切换状态
    connect(this, &QPushButton::clicked, this, &ToggleButton::handleClicked);
}

void ToggleButton::setIsGreen(bool value) {
    if (m_isGreen == value) return;
    // 变更颜色状态标志
    m_isGreen = value;
    // 进行按钮样式改变
    updateStyle();
    // 用于通知其他对象，m_isGreen发生改变。发射信号，通知连接了这个信号的槽 状态发生了变化。
    // emit：通知所有观察者，本身不是函数调用，它只是宏，底层会调用 Qt 的信号机制。
    emit isGreenChanged(m_isGreen);
}

void ToggleButton::handleClicked() {
    setIsGreen(!m_isGreen);
}

void ToggleButton::updateStyle() {
    if (m_isGreen) {
        setStyleSheet(
            "ToggleButton { background-color: green; color: white; border: none;}"
        );
    } else {
        setStyleSheet(
            "ToggleButton { background-color: red; color: white; border: none;}"
        );
    }
}
